#ifndef CENGINE_H
#define CENGINE_H

#include <irrlicht.h>
#include "cDefines.h"
#include "cGameReceiver.h"

using namespace irr;
using namespace scene;
using namespace core;
using namespace video;

class cEngine
{
    public:

        //Конструктор
        cEngine(E_DRIVER_TYPE driverType =  DEFAULT_DRIVER,
                dimension2du resolution =   DEFAULT_RESOLUTION,
                IEventReceiver* receiver =  0,
                bool fullscreen =           DEFAULT_FULLSCREEN,
                bool stencilBuffer =        DEFAULT_STENCILBUF,
                u8 bits =                   DEFAULT_BITS,
                u8 antiAlias =              DEFAULT_ANTIALIAS
                );

        //Деструктор
        virtual ~cEngine();

        //Цикл отрисовки и обработки данных (ШАГ)
        void step();
        //Задание обработчика события
        void setEventReceiver(IEventReceiver* receiver);
        void setEventReceiver(cGameReceiver* receiver);
        //Тестовая сцена
        void addTestScene();

        //!Системные объекты
        IrrlichtDevice* device;
        ISceneManager* smgr;            //Менеджер сцены
        IVideoDriver* driver;           //Видеодрайвер
        ICameraSceneNode* camera;       //Камера

    protected:
    private:
        u32 receiverType;               //Тип обработчика событий (0 - стандартный, 1 - cGameReceiver)
        cGameReceiver* greceiver;        //Локальная копия обработчика событий
};

#endif // CENGINE_H
